#ifndef INTERPRETE_H
#define INTERPRETE_H

#include "proceso.h"
#include "metronomo.h"
#include "compas.h"

class Interprete : public Proceso
{
	Q_OBJECT

public:
	Interprete();
	~Interprete();

	int getTempo() { return metronomo.getTempo(); }
	void setTempo(int tempo) { metronomo.setTempo(tempo); }

	quint64 getMilisegundosDesdeInicio() {
		return metronomo.getMilisegundosDesdeInicio();
	}

  	void setCompas(const Compas& compas);

	Compas getCompas() { return compas; }

	double getProporcionCompletadoCompas() {
		return metronomo.getProporcionCompletadoCompas();
	}

	quint64 getMilisegundoInicioCompas() {
		return metronomo.getMilisegundoInicioCompas();
	}

	double getMilisegundosPorCompas() {
		return metronomo.getMilisegundosPorCompas();
	}

	void setReproducirSonidoMetronomo(bool reproducir) {
		metronomo.setReproducirSonido(reproducir);
	}

	bool getReproducirSonidoMetronomo() {
		return metronomo.getReproducirSonido();
	}

protected:
	void inicio();
	void proceso();
	void fin();

	bool procesarNota();
	void primeraNota();
	void siguienteNota();

private:
	Metronomo metronomo;

	Compas compas; 

	NotaCompas notaActual;

	int contadorNotas;
	int contadorCompas;
};

#endif // INTERPRETE_H
